package com.zja.juc.countDownLatch;

// CountDownLatch 在多线程编程中有许多应用实例。下面是一些常见的应用场景：
//
// 1、并行任务的等待：当一个任务需要依赖于多个并行执行的子任务时，可以使用 CountDownLatch 来等待所有子任务完成。主任务可以调用 await() 方法等待子任务的完成，而子任务在完成时调用 countDown() 方法递减计数。
//
// 2、启动信号：当某个系统或服务需要等待其他组件初始化完成后才能启动时，可以使用 CountDownLatch。主组件可以等待其他组件初始化完成，而其他组件在初始化完成后调用 countDown() 方法通知主组件。
//
// 3、线程池管理：在使用线程池执行一组任务时，可以使用 CountDownLatch 来等待所有任务完成。主线程可以调用 await() 方法等待所有任务的完成，而每个任务在执行完成时调用 countDown() 方法递减计数。
//
// 4、测试并发性能：在进行并发性能测试时，可以使用 CountDownLatch 来控制并发线程的启动和等待。测试线程可以等待所有并发线程准备就绪，然后一起开始执行任务。
//
// 5、定时任务等待：当需要等待一组定时任务全部执行完成后再执行后续操作时，可以使用 CountDownLatch。每个定时任务在执行完成时调用 countDown() 方法递减计数，而主线程可以在 await() 方法中等待所有定时任务的完成。